// Math.get_random = function () {
//     var e = 0;
//     var t = 0;
//     var o = arguments.length;
//     var i = new Array(o);
//     for (var n = 0; n < o; n++) {
//         i[n] = arguments[n];
//     }
//     1 === i.length && Array.isArray(i[0]) ? ((e = i[0][0]), (t = i[0][1])) : 2 === i.length && ((e = i[0]), (t = i[1]));
//     return Math.random() * (t - e) + e;
// };
// Math.get_random_int = function () {
//     return Math.floor(Math.get_random.apply(Math, arguments));
// };
// Math.get_random_bool = function () {
//     return Math.get_random(0, 1) > 0.5;
// };
// Math.clamp = function (e, t, o) {
//     return e < t ? t : e > o ? o : e;
// };
// Math.clamp0_1 = function (e) {
//     return Math.clamp(e, 0, 1);
// };
// Math.get_normal_value = function (e) {
//     return e ? e / Math.abs(e) : 0;
// };
// Math.generateUUID = (function () {
//     var e = [];
//     for (var t = 0; t < 256; t++) {
//         e[t] = (t < 16 ? "0" : "") + t.toString(16);
//     }
//     return function () {
//         var t = (4294967295 * Math.random()) | 0;
//         var o = (4294967295 * Math.random()) | 0;
//         var i = (4294967295 * Math.random()) | 0;
//         var n = (4294967295 * Math.random()) | 0;
//         return (
//             e[255 & t] +
//             e[(t >> 8) & 255] +
//             e[(t >> 16) & 255] +
//             e[(t >> 24) & 255] +
//             "-" +
//             e[255 & o] +
//             e[(o >> 8) & 255] +
//             "-" +
//             e[((o >> 16) & 15) | 64] +
//             e[(o >> 24) & 255] +
//             "-" +
//             e[(63 & i) | 128] +
//             e[(i >> 8) & 255] +
//             "-" +
//             e[(i >> 16) & 255] +
//             e[(i >> 24) & 255] +
//             e[255 & n] +
//             e[(n >> 8) & 255] +
//             e[(n >> 16) & 255] +
//             e[(n >> 24) & 255]
//         ).toUpperCase();
//     };
// })();


/**
 * 获取随机浮点数
 * @param {...number} args 参数列表
 * @returns {number} 返回随机浮点数
 */
Math.get_random = function (...args) {
    let min = 0;
    let max = 0;

    if (args.length === 1 && Array.isArray(args[0])) {
        min = args[0][0];
        max = args[0][1];
    } else if (args.length === 2) {
        min = args[0];
        max = args[1];
    }

    return Math.random() * (max - min) + min;
};

/**
 * 获取随机整数
 * @param {...number} args 参数列表
 * @returns {number} 返回随机整数
 */
Math.get_random_int = function (...args) {
    return Math.floor(Math.get_random(...args));
};

/**
 * 获取随机布尔值
 * @returns {boolean} 返回随机布尔值
 */
Math.get_random_bool = function () {
    return Math.get_random(0, 1) > 0.5;
};

/**
 * 将数值限制在指定范围内
 * @param {number} value 目标数值
 * @param {number} min 最小值
 * @param {number} max 最大值
 * @returns {number} 返回限制后的数值
 */
Math.clamp = function (value, min, max) {
    return Math.max(min, Math.min(max, value));
};

/**
 * 将数值限制在0到1之间
 * @param {number} value 目标数值
 * @returns {number} 返回限制在0到1之间的数值
 */
Math.clamp0_1 = function (value) {
    return Math.clamp(value, 0, 1);
};

/**
 * 获取标准化值
 * @param {number} value 目标数值
 * @returns {number} 返回标准化后的数值
 */
Math.get_normal_value = function (value) {
    return value ? value / Math.abs(value) : 0;
};

/**
 * 生成UUID
 * @returns {string} 返回生成的UUID
 */
Math.generateUUID = (function () {
    const hexArray = [];
    for (let i = 0; i < 256; i++) {
        hexArray[i] = (i < 16 ? "0" : "") + i.toString(16);
    }

    return function () {
        const randomValues = new Uint32Array(4);
        window.crypto.getRandomValues(randomValues);

        return (
            hexArray[randomValues[0] & 0xff] +
            hexArray[(randomValues[0] >> 8) & 0xff] +
            hexArray[(randomValues[0] >> 16) & 0xff] +
            hexArray[(randomValues[0] >> 24) & 0xff] +
            "-" +
            hexArray[randomValues[1] & 0xff] +
            hexArray[(randomValues[1] >> 8) & 0xff] +
            "-" +
            hexArray[((randomValues[1] >> 16) & 0x0f) | 0x40] +
            hexArray[(randomValues[1] >> 24) & 0xff] +
            "-" +
            hexArray[(randomValues[2] & 0x3f) | 0x80] +
            hexArray[(randomValues[2] >> 8) & 0xff] +
            "-" +
            hexArray[(randomValues[2] >> 16) & 0xff] +
            hexArray[(randomValues[2] >> 24) & 0xff] +
            hexArray[randomValues[3] & 0xff] +
            hexArray[(randomValues[3] >> 8) & 0xff] +
            hexArray[(randomValues[3] >> 16) & 0xff] +
            hexArray[(randomValues[3] >> 24) & 0xff]
        ).toUpperCase();
    };
})();

/**
 * 代码优化说明:
 * 1. 使用ES6语法中的解构赋值和扩展运算符简化参数处理，提升代码可读性。
 * 2. 使用let和const替代var定义变量，提升代码块作用域安全性。
 * 3. 使用Math.max和Math.min简化clamp函数逻辑。
 * 4. 使用window.crypto.getRandomValues生成随机数，确保UUID生成的随机性和安全性。
 * 5. 添加详细的函数文档注释，提升代码可维护性。
 */
